草庐IT

java try finally 阻止关闭流

全部标签

C++:如何阻止 map 的 operator[] 插入虚假值?

我的代码做了以下事情:使用operator[]从map中检索值。检查返回值,如果NULL使用insert在map中插入一个新元素。神奇的是,一个值为0的元素出现在map中。经过几个小时的调试,我发现了以下内容:map的operator[]insertsanewelementifthekeyisnotfound而插入doesnotchangethevalueifthekeyexists.即使映射值类型的默认构造函数不存在,代码也会编译并且operator[]插入0。有没有什么办法(例如,从现在开始我可以遵循的一些编码约定)我可以防止这对我造成伤害? 最佳答案

c++ boost asio超时以阻止连接

我有一个C++boost客户端,它执行阻塞连接并在收到响应后处理消息。我面临一个奇怪的问题。tcp::resolver::queryquery(tcp::v6(),this->host,port,tcp::resolver::query::v4_mapped);iterator=resolver.resolve(query);socket=newtcp::socket(io_service);socket->connect(*iterator);我试图连接到一台ping6无法访问的机器(但启用了IPV6)。尽管如此,我在尝试解决第2行中的查询时没有收到任何错误。因此,在给出错误之前尝试

c++ - 使用 fclose() 关闭文件但文件仍在使用中

我在使用我的程序删除/覆盖文件时遇到问题,该文件也被我的程序使用(读取)。问题似乎是因为我的程序正在从文件(output.txt)中读取数据,所以它会将文件置于“使用中”状态,这使得无法删除或覆盖文件。我不明白为什么文件保持“使用中”状态,因为我在使用fclose()后关闭了文件;这是我的代码:boolbBool=truewhile(bBool){//Runmyprogram.exetotgenerate(anew)output.txt//CreatefilepointerandopenfileFILE*pInputFile=NULL;pInputFile=fopen("output.

c++ - 使用 ios_base::register_callback() 和 ios_base::event 检测流关闭

我有一个返回unique_ptr的API给API用户。我想知道用户何时完成此流,以便我可以对他们刚刚写入的文件采取进一步的操作。必须关闭该文件,因为即将重新挂载分区。这可能是这个问题的错误解决方案,但就在我返回流之前,我用register_callback()注册了一个回调。:std::unique_ptros(newstd::ofstream(name,std::ofstream::out|std::ofstream::trunc|std::ofstream::binary));os->register_callback(done_callback,0);returnos;回调在别处

c++ - 为什么默认关闭 C4062 Visual C++ 警告?

根据MSDN,VisualC++可以发出C4062warning什么时候和枚举用于switch和该枚举中至少有一个元素没有标签,并且开关中没有default:标签现在对我来说,这种情况当然值得警告-有问题的元素很可能处理不当。如果无需为某些元素做任何事情-开发人员可以提供一个空的case或default。默认关闭此警告的原因可能是什么? 最佳答案 有些人(包括我自己)喜欢在构建时看到“0个警告”。如果你只是不处理少数情况,添加一个空案例可能没问题,但如果你正在使用一个输入库,它给你一个显示哪个键按下的枚举,你真的想要200多个空案例

c++ - 如果试图关闭一个已经关闭的套接字 winsock 会发生什么?

这个问题在这里已经有了答案:Callingshutdownandclosesockettwiceonsamesocket(3个答案)关闭9年前。如果我两次调用closesocket(m_socket)会发生什么?第一次调用后,套接字将关闭。第二次调用后是否会发生对程序或应用程序不利的事情。否则它只会返回一个我可以忽略的错误。

c++ - 关闭时 Boost 日志中的 Boost 线程访问冲突

我有一个使用boost日志记录的应用程序。在关闭期间,它会在空指针访问时发生访问冲突。当我单步执行代码到失败点时,似乎正在取消分配boost::logdll,然后boost::thread代码尝试访问曾经被日志dll占用的内存。我没有在自己的代码中使用任何boost线程,因此假设boost-threaddll被boostlog使用。为了确保在关闭之前销毁所有接收器,我调用了:core->flush()和core->remove_all_sinks()我使用的是boost1.60,也曾在boost1.63上尝试过。相同的结果。有没有办法确保在退出/卸载dll之前完全关闭boost日志记录

c++ - POSIX 计时器信号未在信号处理程序中被阻止

我正在设置一个POSIX定时器以给定的速率调用一个函数。我设置了一个信号处理程序并初始化了定时器,等等……一切正常。然而,根据我读过的所有文档,当我在信号处理程序中时,我不应该从计时器接收到信号(它应该自动被阻止)。为了更进一步,我什至将sigaction的sa_mask设置为阻止所有信号......我仍然多次调用信号处理程序......设置处理程序://establishthesignalhandlersigset_tblockMask;structsigactionsigact;sigfillset(&blockMask);//sigemptyset(&blockMask);sig

c++ - boost::asio - 知道什么时候必须关闭/关闭连接

我实现了一个协议(protocol)(socks),该协议(protocol)要求我的服务器将来自客户端的连接中继到目的地。我实现中继部分的方式是使用类似这样的东西:socket_.async_read_some(boost::asio::buffer(dataClient_,1024),boost::bind(&ProxySocksSession::HandleClientProxyRead,this,boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));remoteSock_.

代号:不幸的是,应用程序关闭

每当我从一种表单移到另一个表单时,应用程序关闭,我就会收到“不幸的关闭”错误,并且在日志文件中的错误低于“java.lang.nullpointerexception:尝试调用虚拟方法”voidcom.codename1.impl。android.inplaceeditview$editview.switchtotextarea(com.codename1.ui.textarea)'null对象引用“您能帮我解决这个问题吗?提前致谢看答案用电缆连接设备,然后查看LogCat/DDMS输出。向我们提供错误的错误堆栈跟踪问题跟踪器.